Destiny 2, an online game that has both PvE and PvP aspects can seem very overwhelming when trying to find a proper weapon load out. There are multiple aspects behind each weapon whether it be the type of weapon it is, the ammo it uses, or just the pure stats behind the weapon.
My goal here is to explore all the weapons in Destiny 2 to find out which ones are most optimized for PvP. It can be hard to find what weapon to use in for PVP and that’s why I hope to enlighten some of those concerns.
The data I gathered came from the below site and contains the pure base stats behind every weapon in Destiny 2. These data sets do not contain any modifiers you get from any perks in the game and are solely from the weapons themselves. These were each pulled from 16 different spreadsheets as they were broken apart by weapon types.
https://www.destinymassivebreakdowns.com/weapon-stats-spreadsheet-2
library(tidyverse)
library(dplyr)
library(ggplot2)
library(plotly)
## Warning: package 'plotly' was built under R version 4.1.3
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
Reading in the data
library(readr)
Auto_Rifles <- read_csv("Weapon Data/Auto Rifles.csv")
## New names:
## * Bursts -> Bursts...15
## * Bursts -> Bursts...18
## Rows: 47 Columns: 28
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (7): Archetype, Weapon, Energy, Perk, Crit_Percent, Type, Ammo
## dbl (18): RoF, Crit_dmg, Body_dmg, Crit_mult, Optimal_TtK(s), Opt_Shots, Opt...
## lgl (3): Effect, Bursts...15, Bursts...18
##
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
library(readr)
Bows <- read_csv("Weapon Data/Bows.csv")
## New names:
## * Bursts -> Bursts...15
## * Bursts -> Bursts...18
## Rows: 20 Columns: 26
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (7): Archetype, Weapon, Energy, Perk, Crit_Percent, Type, Ammo
## dbl (16): Draw_Time, Crit_dmg, Body_dmg, Crit_mult, Bolts, Opt_Crits, Opt_Bo...
## lgl (3): Effect, Optimal_TtK (s), Body_TtK
##
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
library(readr)
Breech_Grenade_Launchers <- read_csv("Weapon Data/Breech Grenade Launchers.csv")
## Rows: 14 Columns: 14
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (5): Archetype, Weapon, Energy, Type, Ammo
## dbl (9): RoF, Blast_Radius, Velocity, Stability, Handling, Reload_Speed, Inv...
##
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
library(readr)
Fusion_Rifles <- read_csv("Weapon Data/Fusion Rifles.csv")
## New names:
## * Bursts -> Bursts...15
## * Bursts -> Bursts...18
## Rows: 30 Columns: 29
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (7): Archetype, Weapon, Energy, Effect, Crit_Percent, Type, Ammo
## dbl (19): Charge_Time(ms), Crit_dmg, Body_dmg, Crit_mult, Optimal_TtK(s), Ch...
## lgl (3): Perk, Bursts...15, Bursts...18
##
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
library(readr)
Hand_Cannons <- read_csv("Weapon Data/Hand Cannons.csv")
## New names:
## * Bursts -> Bursts...15
## * Bursts -> Bursts...18
## Rows: 52 Columns: 28
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (7): Archetype, Weapon, Energy, Perk, Crit_Percent, Type, Ammo
## dbl (20): RoF, Crit_dmg, Body_dmg, Crit_mult, Optimal_TtK(s), Opt_Shots, Opt...
## lgl (1): Effect
##
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
library(readr)
Heavy_Grenade_Launchers <- read_csv("Weapon Data/Heavy Grenade Launchers.csv")
## Rows: 19 Columns: 15
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (5): Archetype, Weapon, Energy, Type, Ammo
## dbl (10): RoF, Time_Between_Shots (s), Blast_Radius, Velocity, Stability, Ha...
##
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
library(readr)
Linear_Fusion_Rifles <- read_csv("Weapon Data/Linear Fusion Rifles.csv")
## New names:
## * Bursts -> Bursts...15
## * Bursts -> Bursts...18
## Rows: 15 Columns: 28
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (7): Archetype, Weapon, Energy, Perk, Crit_Percent, Type, Ammo
## dbl (18): Charge_Time(ms), Crit_dmg, Body_dmg, Crit_mult, Optimal_TtK(s), Op...
## lgl (3): Effect, Bursts...15, Bursts...18
##
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
library(readr)
Machine_Guns <- read_csv("Weapon Data/Machine Guns.csv")
## New names:
## * Bursts -> Bursts...15
## * Bursts -> Bursts...18
## Rows: 19 Columns: 29
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (6): Archetype, Weapon, Energy, Crit_Percent, Type, Ammo
## dbl (19): RoF, Crit_dmg, Body_dmg, Crit_mult, Optimal_TtK(s), Opt_Shots, Opt...
## lgl (4): Perk, Effect, Bursts...15, Bursts...18
##
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
library(readr)
Pulse_Rifles <- read_csv("Weapon Data/Pulse Rifles.csv")
## New names:
## * Bursts -> Bursts...15
## * Bursts -> Bursts...18
## Rows: 41 Columns: 28
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (7): Archetype, Weapon, Energy, Perk, Crit_Percent, Type, Ammo
## dbl (20): RoF, Crit_dmg, Body_dmg, Crit_mult, Optimal_TtK(s), Shots, Opt_Cri...
## lgl (1): Effect
##
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
library(readr)
Rocket_Launchers <- read_csv("Weapon Data/Rocket Launchers.csv")
## Rows: 26 Columns: 13
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (5): Archetype, Weapon, Energy, Type, Ammo
## dbl (8): RoF, Blast_Radius, Velocity, Stability, Handling, Reload_Speed, Inv...
##
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
library(readr)
Scout_Rifles <- read_csv("Weapon Data/Scout Rifles.csv")
## New names:
## * Bursts -> Bursts...15
## * Bursts -> Bursts...18
## Rows: 35 Columns: 27
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (7): Archetype, Weapon, Energy, Perk, Crit_Percent, Type, Ammo
## dbl (17): RoF, Crit_dmg, Body_dmg, Crit_mult, Optimal_TtK(s), Opt_Shots, Opt...
## lgl (3): Effect, Bursts...15, Bursts...18
##
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
library(readr)
Shotguns <- read_csv("Weapon Data/Shotguns.csv")
## New names:
## * Bursts -> Bursts...15
## * Bursts -> Bursts...18
## Rows: 46 Columns: 28
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (6): Archetype, Weapon, Energy, Crit_Percent, Type, Ammo
## dbl (20): RoF, Crit_dmg, Body_dmg, Crit_mult, Optimal_TtK(s), Pellets_to_Kil...
## lgl (2): Perk, Effect
##
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
library(readr)
Sidearms <- read_csv("Weapon Data/Sidearms.csv")
## New names:
## * Bursts -> Bursts...15
## * Bursts -> Bursts...18
## Rows: 32 Columns: 28
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (7): Archetype, Weapon, Energy, Perk, Crit_Percent, Type, Ammo
## dbl (20): RoF, Crit_dmg, Body_dmg, Crit_mult, Optimal_TtK(s), Opt_Shots, Opt...
## lgl (1): Effect
##
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
library(readr)
Sniper_Rifles <- read_csv("Weapon Data/Sniper Rifles.csv")
## New names:
## * Bursts -> Bursts...15
## * Bursts -> Bursts...18
## Rows: 39 Columns: 29
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (7): Archetype, Weapon, Energy, Perk, Crit_Percent, Type, Ammo
## dbl (18): RoF, Crit_dmg, Body_dmg, Crit_mult, Opt_Shots, Opt_Crits, Opt_Body...
## lgl (4): Effect, Optimal_TtK(s), Bursts...15, Bursts...18
##
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
library(readr)
Submachine_Guns <- read_csv("Weapon Data/Submachine Guns.csv")
## Rows: 31 Columns: 28
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (7): Archetype, Weapon, Energy, Perk, Crit_Percent, Type, Ammo
## dbl (18): RoF, Crit_dmg, Body_dmg, Crit_mult, Optimal_TtK(s), Opt_Shots, Opt...
## lgl (3): Effect, Opt_Bursts, Bursts
##
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
library(readr)
Swords <- read_csv("Weapon Data/Swords.csv")
## Rows: 32 Columns: 12
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (5): Archetype, Weapon, Energy, Type, Ammo
## dbl (7): AmmoCap, Charge
## Rate, Speed, Impact, Range, Efficiency, Defense
##
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
##save(Auto_Rifles, Bows, Breech_Grenade_Launchers, Fusion_Rifles, Hand_Cannons, Heavy_Grenade_Launchers, Linear_Fusion_Rifles, Machine_Guns, Pulse_Rifles, Rocket_Launchers, Scout_Rifles, Shotguns, Sidearms, Sniper_Rifles, Submachine_Guns, Swords, file = "all_guns.RData")
##load("all_guns.RData")
gun_data <- bind_rows(Auto_Rifles, Bows, Breech_Grenade_Launchers, Fusion_Rifles, Hand_Cannons, Heavy_Grenade_Launchers, Linear_Fusion_Rifles, Machine_Guns, Pulse_Rifles, Rocket_Launchers, Scout_Rifles, Shotguns, Sidearms, Sniper_Rifles, Submachine_Guns, Swords)
Below are the basics to keep in mind when selecting a loadout for PvP in Destiny 2.
Since one of the major aspects for deciding our weapons of choice is ammo it is only best to see which types of weapons take what ammo.
##What weapons take Primary Ammo
gun_data %>% filter(Ammo == "Primary") %>% count(Type)
## # A tibble: 9 x 2
## Type n
## <chr> <int>
## 1 Autorifle 47
## 2 bgl 1
## 3 Bow 19
## 4 Handcannon 50
## 5 Linearfusion 1
## 6 Pulserifle 41
## 7 Scoutrifle 35
## 8 Sidearm 31
## 9 Sub 31
#There are 9 Weapon types that use Primary Ammo
##What weapons take Special Ammo
gun_data %>% filter(Ammo == "Special") %>% count(Type)
## # A tibble: 7 x 2
## Type n
## <chr> <int>
## 1 bgl 13
## 2 Fusionrifle 29
## 3 Handcannon 2
## 4 Linearfusion 9
## 5 Shotgun 44
## 6 Sidearm 1
## 7 Sniper 37
#There are 7 Weapon Types that use Special Ammo
##What weapons take Heavy Ammo
gun_data %>% filter(Ammo == "Heavy") %>% count(Type)
## # A tibble: 9 x 2
## Type n
## <chr> <int>
## 1 Bow 1
## 2 Fusionrifle 1
## 3 Hgl 19
## 4 Linearfusion 5
## 5 Machinegun 19
## 6 Rocket 26
## 7 Shotgun 2
## 8 Sniper 2
## 9 Sword 32
#There are 8 weapon types that use Heavy Ammo
gun_data %>% filter(Energy != "ALL" & Energy != "Void Solar") %>% ggplot(aes(Energy, fill = Ammo)) + geom_bar() + ggtitle("Types of Energy by Ammo")
gun_data %>% filter(Energy == "Kinetic" & Ammo == "Primary") %>% count(Energy)
## # A tibble: 1 x 2
## Energy n
## <chr> <int>
## 1 Kinetic 115
Our primary which is a weapon that has infinite ammo and will be our main combat weapon. A primary weapon should be able to have an quick ttk for its best suited range. Primary weapons are either your main source of damage or your back up weapon to finish someone off after hitting them with your special ammo weapon. This weapons needs to be reliable enough to take out targets on its own and deal enough damage to take out any enemy that was already damaged.
Primary <- gun_data %>% filter(Ammo == "Primary")
Primary %>% filter(Energy != "ALL" & Ammo == "Primary" & Type != "Linearfusion") %>% ggplot(aes(Type, fill = Energy)) + geom_bar() + ggtitle("Types of Primary Weapons by Energy")
As seen in the previous example the Auto Rifles, Hand Cannons and Pulse rifles are the most abundant. I can say just from personal experience that these 3 types of weapons are what dominate in PvP. Yes there are exotic scout rifles, side arms and sub machine guns that perform very well.But, exotics are in a league of their own and each have something uniquely special about them that cant be compared.
top_3 <- bind_rows(Auto_Rifles, Pulse_Rifles, Hand_Cannons)
##pscale <- top_primary %>% ggplot(aes(Range, `Optimal_TtK(s)`, color = Type, text = Weapon)) + geom_point()
##pscale2 <- top_primary %>% ggplot(aes(Range, Body_TtK, color = Type, shape = Energy, text = Weapon)) + geom_point()
##ggplotly(pscale)
##ggplotly(pscale2)
##ggplotly(Primary %>% ggplot(aes(Range, `Optimal_TtK(s)` , color = Type, text = Weapon)) + geom_point())
ggplotly(top_3 %>% filter(Energy != "ALL" & Archetype != "Trace Rifle" & Ammo == "Primary") %>% ggplot(aes(Range, `Optimal_TtK(s)`, color = Energy, text = Weapon)) + geom_point() + ggtitle("Weapon types by range and Opt Ttk") + facet_wrap(~Type))
These primary weapons in general don’t shine as well as the previous 3 weapon types in PvP. The remaining weapons consist of sidearms and sub machine guns which specialize in close range and tend to have a high fire rate with little damage output. Running these weapons is PvP is a not recommended because all special weapons have the potential to one shot any enemy at close-medium range. There is also scout rifles which specialize in long range encounters. Theses semi automatic weapons have a slow fire rate but to good damage at medium-far range encounters.
other_prim <- bind_rows(Submachine_Guns, Sidearms, Scout_Rifles)
ggplotly(other_prim %>% filter(Energy != "ALL" & Archetype != "Trace Rifle" & Ammo == "Primary") %>% ggplot(aes(Range, `Optimal_TtK(s)`, color = Energy, text = Weapon)) + geom_point() + ggtitle("Weapon types by range and Opt Ttk") + facet_wrap(~Type))
As shown in these graphs we can see that the scout rifles optimal Ttk is between .8 and 1 second. The side arms and sub machine guns slowest optimal Ttk is on par with the scout rifles fastest optimal Ttk. The only 2 weapons on here I would recommend running are the Tarrabah and The Recluse. This is because of their fast Optimal ttk and a range a little above average other sub machine guns.The Sidearms are too on average to use since they don’t have a far range and are just on par with sub machine guns.
Players spawn with limited special ammo but these weapons have 1 shot capabilities.(Meaning you are able to take out an enemy with one shot) We will be looking into the 3 most common types of special weapons that are commonly seen which are Fusion rifles, Shotguns and Sniper rifles.
Special <- gun_data %>% filter(Ammo == "Special")
top3s <- bind_rows(Fusion_Rifles, Shotguns, Sniper_Rifles)
##ggplotly(Special %>% filter(Energy != "Kinetic") %>% ggplot(aes(Range, Handling, color = Type, Shape = Energy, text = Weapon)) + geom_point() + ggtitle("Density Chart"))
##ggplotly(Special %>% ggplot(aes(Range, Handling, color = Type, Shape = Energy, text = Weapon)) + geom_point() + ggtitle("Density Chart"))
##ggplotly(Special %>% ggplot( aes(x = Range)) + geom_density() + ggtitle('IRIS') + theme_light())
ggplotly(top3s %>% filter(Range != 999 & Archetype != "Exotic" & Archetype != "Exotic Heavy" & Archetype != "Exotic Slug" & Archetype != "Multi" & Archetype != "Burst Shotgun" & Energy != "Kinetic") %>% ggplot( aes(x = Range)) +
geom_density() +
ggtitle('Density of top 3 Energy Weapon ranges') +
theme_light() + facet_wrap(~Type))
Keep in mind that each of these 3 weapon types perform differently and cannot be compared against each other. We can see obviously that fusion rifles excell at shot to medium range. The two peaks in the shotgun denisty chart are shoing the amoung of slug and buck shot guns. (Slugs have farther range) Finally, sniper rifles are sniper rifles they all have extremely far range so their range does not matter when comparing.
| ### Sniper Rifles These weapons are successful in long range encounters and guarantee 1 a shot kill if it is a precision shot. (Head shot)(Long Range Weapon) |
| - Small zoom scope - High Aim Assist |
r ggplotly(Sniper_Rifles %>% filter(Archetype != "Exotic Heavy" & Archetype != "Exotic" & Energy != "Kinetic") %>% ggplot(aes(Aim_Assist, Lowest_Zoom, color = Archetype, text = Weapon)) + geom_point() + ggtitle("Best Sniper by Aim assist and zoom")) |
{=html} <div id="htmlwidget-a7cb040938a95ba5bcc4" style="width:672px;height:480px;" class="plotly html-widget"></div> <script type="application/json" data-for="htmlwidget-a7cb040938a95ba5bcc4">{"x":{"data":[{"x":[66,67,66,68,62,67,68,51,60,55,60],"y":[44,46,50,45,45,50,40,40,50,40,50],"text":["Aim_Assist: 66<br />Lowest_Zoom: 44<br />Archetype: Adaptive<br />1000 Yard Stare (Grasp of Avarice Dungeon)","Aim_Assist: 67<br />Lowest_Zoom: 46<br />Archetype: Adaptive<br />Thoughtless (Season of the Risen)<U+1D9C>","Aim_Assist: 66<br />Lowest_Zoom: 50<br />Archetype: Adaptive<br />Fugue (World)","Aim_Assist: 68<br />Lowest_Zoom: 45<br />Archetype: Adaptive<br />Adored (Quest)","Aim_Assist: 62<br />Lowest_Zoom: 45<br />Archetype: Adaptive<br />Far Future (Battlegrounds)","Aim_Assist: 67<br />Lowest_Zoom: 50<br />Archetype: Adaptive<br />Uzume RR4 (Nightfall)","Aim_Assist: 68<br />Lowest_Zoom: 40<br />Archetype: Adaptive<br />Beloved (Menagerie)","Aim_Assist: 51<br />Lowest_Zoom: 40<br />Archetype: Adaptive<br />Sole Survivor (Reckoning)","Aim_Assist: 60<br />Lowest_Zoom: 50<br />Archetype: Adaptive<br />Elegy-49 (Gunsmith)","Aim_Assist: 55<br />Lowest_Zoom: 40<br />Archetype: Adaptive<br />The Long Goodbye (Strike)","Aim_Assist: 60<br />Lowest_Zoom: 50<br />Archetype: Adaptive<br />Fate Cries Foul (Crucible)"],"type":"scatter","mode":"markers","marker":{"autocolorscale":false,"color":"rgba(248,118,109,1)","opacity":1,"size":5.66929133858268,"symbol":"circle","line":{"width":1.88976377952756,"color":"rgba(248,118,109,1)"}},"hoveron":"points","name":"Adaptive","legendgroup":"Adaptive","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"x":[45,48,47,46,48,65],"y":[50,50,58,50,50,45],"text":["Aim_Assist: 45<br />Lowest_Zoom: 50<br />Archetype: Aggressive<br />Tartara Gaze (Black Armory)","Aim_Assist: 48<br />Lowest_Zoom: 50<br />Archetype: Aggressive<br />Frozen Orbit (Crucible)","Aim_Assist: 47<br />Lowest_Zoom: 58<br />Archetype: Aggressive<br />Occluded Finality (Iron Banner)","Aim_Assist: 46<br />Lowest_Zoom: 50<br />Archetype: Aggressive<br />Trophy Hunter (Season Pass)","Aim_Assist: 48<br />Lowest_Zoom: 50<br />Archetype: Aggressive<br />The Long Walk (Prophecy Dungeon)","Aim_Assist: 65<br />Lowest_Zoom: 45<br />Archetype: Aggressive<br />Borealis"],"type":"scatter","mode":"markers","marker":{"autocolorscale":false,"color":"rgba(0,186,56,1)","opacity":1,"size":5.66929133858268,"symbol":"circle","line":{"width":1.88976377952756,"color":"rgba(0,186,56,1)"}},"hoveron":"points","name":"Aggressive","legendgroup":"Aggressive","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"x":[73,73,72,70,73,72,69,68],"y":[35,40,40,35,45,45,45,50],"text":["Aim_Assist: 73<br />Lowest_Zoom: 35<br />Archetype: Rapid-Fire<br />Father's Sins (Wellspring)<U+1D9C>","Aim_Assist: 73<br />Lowest_Zoom: 40<br />Archetype: Rapid-Fire<br />Apostate (Altars of Sorrow)","Aim_Assist: 72<br />Lowest_Zoom: 40<br />Archetype: Rapid-Fire<br />Omniscient Eye (GoS Raid)","Aim_Assist: 70<br />Lowest_Zoom: 35<br />Archetype: Rapid-Fire<br />Twilight Oath (Dreaming City)","Aim_Assist: 73<br />Lowest_Zoom: 45<br />Archetype: Rapid-Fire<br />IKELOS_SR_v1.1.0.1 (Contact Event)","Aim_Assist: 72<br />Lowest_Zoom: 45<br />Archetype: Rapid-Fire<br />Distant Tumulus (World)","Aim_Assist: 69<br />Lowest_Zoom: 45<br />Archetype: Rapid-Fire<br />Widow's Bite (World Engram)","Aim_Assist: 68<br />Lowest_Zoom: 50<br />Archetype: Rapid-Fire<br />Cloudstrike"],"type":"scatter","mode":"markers","marker":{"autocolorscale":false,"color":"rgba(97,156,255,1)","opacity":1,"size":5.66929133858268,"symbol":"circle","line":{"width":1.88976377952756,"color":"rgba(97,156,255,1)"}},"hoveron":"points","name":"Rapid-Fire","legendgroup":"Rapid-Fire","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null}],"layout":{"margin":{"t":43.7625570776256,"r":7.30593607305936,"b":40.1826484018265,"l":37.2602739726027},"plot_bgcolor":"rgba(235,235,235,1)","paper_bgcolor":"rgba(255,255,255,1)","font":{"color":"rgba(0,0,0,1)","family":"","size":14.6118721461187},"title":{"text":"Best Sniper by Aim assist and zoom","font":{"color":"rgba(0,0,0,1)","family":"","size":17.5342465753425},"x":0,"xref":"paper"},"xaxis":{"domain":[0,1],"automargin":true,"type":"linear","autorange":false,"range":[43.6,74.4],"tickmode":"array","ticktext":["45","50","55","60","65","70"],"tickvals":[45,50,55,60,65,70],"categoryorder":"array","categoryarray":["45","50","55","60","65","70"],"nticks":null,"ticks":"outside","tickcolor":"rgba(51,51,51,1)","ticklen":3.65296803652968,"tickwidth":0.66417600664176,"showticklabels":true,"tickfont":{"color":"rgba(77,77,77,1)","family":"","size":11.689497716895},"tickangle":-0,"showline":false,"linecolor":null,"linewidth":0,"showgrid":true,"gridcolor":"rgba(255,255,255,1)","gridwidth":0.66417600664176,"zeroline":false,"anchor":"y","title":{"text":"Aim_Assist","font":{"color":"rgba(0,0,0,1)","family":"","size":14.6118721461187}},"hoverformat":".2f"},"yaxis":{"domain":[0,1],"automargin":true,"type":"linear","autorange":false,"range":[33.85,59.15],"tickmode":"array","ticktext":["35","40","45","50","55"],"tickvals":[35,40,45,50,55],"categoryorder":"array","categoryarray":["35","40","45","50","55"],"nticks":null,"ticks":"outside","tickcolor":"rgba(51,51,51,1)","ticklen":3.65296803652968,"tickwidth":0.66417600664176,"showticklabels":true,"tickfont":{"color":"rgba(77,77,77,1)","family":"","size":11.689497716895},"tickangle":-0,"showline":false,"linecolor":null,"linewidth":0,"showgrid":true,"gridcolor":"rgba(255,255,255,1)","gridwidth":0.66417600664176,"zeroline":false,"anchor":"x","title":{"text":"Lowest_Zoom","font":{"color":"rgba(0,0,0,1)","family":"","size":14.6118721461187}},"hoverformat":".2f"},"shapes":[{"type":"rect","fillcolor":null,"line":{"color":null,"width":0,"linetype":[]},"yref":"paper","xref":"paper","x0":0,"x1":1,"y0":0,"y1":1}],"showlegend":true,"legend":{"bgcolor":"rgba(255,255,255,1)","bordercolor":"transparent","borderwidth":1.88976377952756,"font":{"color":"rgba(0,0,0,1)","family":"","size":11.689497716895},"title":{"text":"Archetype","font":{"color":"rgba(0,0,0,1)","family":"","size":14.6118721461187}}},"hovermode":"closest","barmode":"relative"},"config":{"doubleClick":"reset","modeBarButtonsToAdd":["hoverclosest","hovercompare"],"showSendToCloud":false},"source":"A","attrs":{"8d45e2d6f02":{"x":{},"y":{},"colour":{},"text":{},"type":"scatter"}},"cur_data":"8d45e2d6f02","visdat":{"8d45e2d6f02":["function (y) ","x"]},"highlight":{"on":"plotly_click","persistent":false,"dynamic":false,"selectize":false,"opacityDim":0.2,"selected":{"opacity":1},"debounce":0},"shinyEvents":["plotly_hover","plotly_click","plotly_selected","plotly_relayout","plotly_brushed","plotly_brushing","plotly_clickannotation","plotly_doubleclick","plotly_deselect","plotly_afterplot","plotly_sunburstclick"],"base_url":"https://plot.ly"},"evals":[],"jsHooks":[]}</script> |
r Sniper_Rifles %>% filter(Archetype != "Exotic" & Energy != "Kinetic") %>% summarise(Avg_lowest_zoom = mean(Lowest_Zoom), Avg_Aim_Assit = mean(Aim_Assist)) |
## # A tibble: 1 x 2 ## Avg_lowest_zoom Avg_Aim_Assit ## <dbl> <dbl> ## 1 45.1 61.4 |
Shotguns do not have far range, with the exception of a slug shotguns and a few exotics. This weapon type will one shot a player at close range.(Short Range)
ggplotly(Shotguns %>% filter(Archetype != "Exotic" & Archetype != "Exotic Heavy" & Archetype != "Exotic Slug" & Archetype != "Multi" & Archetype != "Burst Shotgun" & Energy != "Kinetic" & Ammo == "Special") %>% ggplot(aes(Handling, Impact, color = Archetype, text = Weapon)) + geom_point() + ggtitle("Best Shotgun by Impact and Handling"))
Shotguns %>% filter(Archetype != "Exotic" & Archetype != "Exotic Heavy" & Archetype != "Exotic Slug" & Archetype != "Multi" & Energy != "Kinetic" & Ammo == "Special") %>% summarise(Avg_Impact = mean(Impact), Avg_Handling = mean(Handling))
## # A tibble: 1 x 2
## Avg_Impact Avg_Handling
## <dbl> <dbl>
## 1 71.8 50.0
Finally the fusion rifles excel at short to medium range encounters as their form of shooting is a charged burst. (Short-Medium Range)
ggplotly(Fusion_Rifles %>% filter(Weapon != "Null Composure (Pinnacle)" & Archetype != "Exotic" & Archetype != "Exotic(Heavy)" & Energy != "Kinetic" & Energy != "Stasis") %>% ggplot(aes(Range, `Charge_Time(ms)`, color = Archetype, text = Weapon)) + geom_point() + ggtitle("Best Sniper by Aim assist and zoom"))
Fusion_Rifles %>% filter(Weapon != "Null Composure (Pinnacle)" & Archetype != "Exotic" & Archetype != "Exotic(Heavy)" & Energy != "Kinetic" & Energy != "Stasis") %>% summarise(Avg_Charge_Time = mean(`Charge_Time(ms)`), Avg_Range = mean(Range))
## # A tibble: 1 x 2
## Avg_Charge_Time Avg_Range
## <dbl> <dbl>
## 1 0.766 49.6
The last special weapons to cover will be the glaives and Breaching grenade launchers. Unfortunately since the glaive type is a brand new weapon type I was not able to find any data that accurately recorded their capabilities. Glaives are basically a spear that can shoot a single ball of energy that does little damage. Breaching grenade launchers can be useful in certain situation but are not good to use whenever. This is because they reload after every shot(very slow reload) and only have one shot potential with a specific perk roll.
ggplotly(Breech_Grenade_Launchers %>% filter(Archetype != "Exotic" & Ammo == "Special" & Energy != "Kinetic") %>% ggplot(aes(Blast_Radius, Velocity, color = Archetype, text = Weapon)) + geom_point() + ggtitle("Breaching grenade Launcher"))
However is you are going to use a grenade launcher as your energy special weapon then you should go with Forbearance. This is a newly added grenade launcher with high velocity and blast radius.
Heavy ammo is vary scarce and at player do not start with any upon spawning in. Heavy ammo is only accessible during the halfway point of matches and only have 2 spawn locations. Even though heavy ammo spawns there is no guarantee you will grab it since other players will be on the look out for it.
##We are not going to include Leviathans Breath, One Thousand Voices, Darci or Whisper for heavy options because they are unbelievably slow and not reasonable to use for PVP.
Heavy <- gun_data %>% filter(Ammo == "Heavy")
ggplotly(Rocket_Launchers %>% filter(Archetype != "Exotic") %>% ggplot(aes(Blast_Radius, Velocity, color = Archetype, Shape = Energy, text = Weapon)) + geom_point() + geom_point() + ggtitle("Rocket Blast Radius and Velocity"))
The only Reasonable option is to run a rocket launcher. Since swords can be out matched by most special weapons. Grenade launchers do not always guarantee a kill and have a much smaller blast radius than rocket launchers.
| ### The other Heavy Weapons |
|---|
| # Swords |
| Swords should be used in PvP because they require you to be directly on you enemy to hit them. So many ther weapons can take you out before even getting close with one of these. But if you are somehow a ninja who is always able to get close to someone with out them noticing then you are going to want to see this graph below. |
r ggplotly(Swords %>% filter(Archetype != "Exotic") %>% ggplot(aes(Speed, Impact, color = Archetype, Shape = Energy, text = Weapon)) + geom_point() + geom_point() + ggtitle("Swords Speed and Impact")) |
{=html} <div id="htmlwidget-d127a9c9209735e03223" style="width:672px;height:480px;" class="plotly html-widget"></div> <script type="application/json" data-for="htmlwidget-d127a9c9209735e03223">{"x":{"data":[{"x":[46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46],"y":[60,60,60,60,60,60,60,60,60,70,60,60,60,60,60,60,60,60,60,60],"text":["Speed: 46<br />Impact: 60<br />Archetype: Adaptive<br />Energy: Arc<br />Night Terror (Moon Essence)","Speed: 46<br />Impact: 60<br />Archetype: Adaptive<br />Energy: Arc<br />Stryker's Sure-Hand (BA Forge)","Speed: 46<br />Impact: 60<br />Archetype: Adaptive<br />Energy: Arc<br />Hagakure","Speed: 46<br />Impact: 60<br />Archetype: Adaptive<br />Energy: Solar<br />Abide the Return (World)","Speed: 46<br />Impact: 60<br />Archetype: Adaptive<br />Energy: Stasis<br />Zephyr","Speed: 46<br />Impact: 60<br />Archetype: Adaptive<br />Energy: Arc<br />Honor's Edge (World)","Speed: 46<br />Impact: 60<br />Archetype: Adaptive<br />Energy: Arc<br />Half-Truths (Xurs Treasure Hoard)","Speed: 46<br />Impact: 60<br />Archetype: Adaptive<br />Energy: Void<br />The Other Half (Xurs Treasure Hoard)","Speed: 46<br />Impact: 60<br />Archetype: Adaptive<br />Energy: Arc<br />Traitor's Fate","Speed: 46<br />Impact: 70<br />Archetype: Adaptive<br />Energy: Arc<br />Bequest (DSC Raid)","Speed: 46<br />Impact: 60<br />Archetype: Adaptive<br />Energy: Solar<br />It Stared Back","Speed: 46<br />Impact: 60<br />Archetype: Adaptive<br />Energy: Solar<br />Just In Case (Reckoning)","Speed: 46<br />Impact: 60<br />Archetype: Adaptive<br />Energy: Void<br />Steel Sybil Z-14 (Crucible)","Speed: 46<br />Impact: 60<br />Archetype: Adaptive<br />Energy: Solar<br />Negative Space (World Engram)","Speed: 46<br />Impact: 60<br />Archetype: Adaptive<br />Energy: Solar<br />Complex Solution","Speed: 46<br />Impact: 60<br />Archetype: Adaptive<br />Energy: Arc<br />Unspoken Promise","Speed: 46<br />Impact: 60<br />Archetype: Adaptive<br />Energy: Solar<br />Eternity's Edge (World)","Speed: 46<br />Impact: 60<br />Archetype: Adaptive<br />Energy: Void<br />Double-Edged Answer","Speed: 46<br />Impact: 60<br />Archetype: Adaptive<br />Energy: Solar<br />Future Safe 10","Speed: 46<br />Impact: 60<br />Archetype: Adaptive<br />Energy: Solar<br />Death's Razor"],"type":"scatter","mode":"markers","marker":{"autocolorscale":false,"color":"rgba(248,118,109,1)","opacity":1,"size":5.66929133858268,"symbol":"circle","line":{"width":1.88976377952756,"color":"rgba(248,118,109,1)"}},"hoveron":"points","name":"Adaptive","legendgroup":"Adaptive","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"x":[10,10],"y":[73,72],"text":["Speed: 10<br />Impact: 73<br />Archetype: Aggressive<br />Energy: Void<br />Throne-Cleaver","Speed: 10<br />Impact: 72<br />Archetype: Aggressive<br />Energy: Void<br />Crown-Splitter (World)"],"type":"scatter","mode":"markers","marker":{"autocolorscale":false,"color":"rgba(163,165,0,1)","opacity":1,"size":5.66929133858268,"symbol":"circle","line":{"width":1.88976377952756,"color":"rgba(163,165,0,1)"}},"hoveron":"points","name":"Aggressive","legendgroup":"Aggressive","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"x":[46,46],"y":[46,60],"text":["Speed: 46<br />Impact: 46<br />Archetype: Caster<br />Energy: Arc<br />Temptation Hook (Umbral Engram)","Speed: 46<br />Impact: 60<br />Archetype: Caster<br />Energy: Solar<br />Sola's Scar (Trials)"],"type":"scatter","mode":"markers","marker":{"autocolorscale":false,"color":"rgba(0,191,125,1)","opacity":1,"size":5.66929133858268,"symbol":"circle","line":{"width":1.88976377952756,"color":"rgba(0,191,125,1)"}},"hoveron":"points","name":"Caster","legendgroup":"Caster","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"x":[82,82],"y":[60,60],"text":["Speed: 82<br />Impact: 60<br />Archetype: Lightweight<br />Energy: Void<br />Quickfang (World)","Speed: 82<br />Impact: 60<br />Archetype: Lightweight<br />Energy: Solar<br />Goldtusk"],"type":"scatter","mode":"markers","marker":{"autocolorscale":false,"color":"rgba(0,176,246,1)","opacity":1,"size":5.66929133858268,"symbol":"circle","line":{"width":1.88976377952756,"color":"rgba(0,176,246,1)"}},"hoveron":"points","name":"Lightweight","legendgroup":"Lightweight","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null},{"x":[46,46,46],"y":[60,60,60],"text":["Speed: 46<br />Impact: 60<br />Archetype: Vortex<br />Energy: Void<br />Falling Guillotine (Umbral Engram)","Speed: 46<br />Impact: 60<br />Archetype: Vortex<br />Energy: Void<br />Razor's Edge (Iron Banner)","Speed: 46<br />Impact: 60<br />Archetype: Vortex<br />Energy: Arc<br />Hero of Ages (Grasp of Avarice Dungeon)"],"type":"scatter","mode":"markers","marker":{"autocolorscale":false,"color":"rgba(231,107,243,1)","opacity":1,"size":5.66929133858268,"symbol":"circle","line":{"width":1.88976377952756,"color":"rgba(231,107,243,1)"}},"hoveron":"points","name":"Vortex","legendgroup":"Vortex","showlegend":true,"xaxis":"x","yaxis":"y","hoverinfo":"text","frame":null}],"layout":{"margin":{"t":43.7625570776256,"r":7.30593607305936,"b":40.1826484018265,"l":37.2602739726027},"plot_bgcolor":"rgba(235,235,235,1)","paper_bgcolor":"rgba(255,255,255,1)","font":{"color":"rgba(0,0,0,1)","family":"","size":14.6118721461187},"title":{"text":"Swords Speed and Impact","font":{"color":"rgba(0,0,0,1)","family":"","size":17.5342465753425},"x":0,"xref":"paper"},"xaxis":{"domain":[0,1],"automargin":true,"type":"linear","autorange":false,"range":[6.4,85.6],"tickmode":"array","ticktext":["20","40","60","80"],"tickvals":[20,40,60,80],"categoryorder":"array","categoryarray":["20","40","60","80"],"nticks":null,"ticks":"outside","tickcolor":"rgba(51,51,51,1)","ticklen":3.65296803652968,"tickwidth":0.66417600664176,"showticklabels":true,"tickfont":{"color":"rgba(77,77,77,1)","family":"","size":11.689497716895},"tickangle":-0,"showline":false,"linecolor":null,"linewidth":0,"showgrid":true,"gridcolor":"rgba(255,255,255,1)","gridwidth":0.66417600664176,"zeroline":false,"anchor":"y","title":{"text":"Speed","font":{"color":"rgba(0,0,0,1)","family":"","size":14.6118721461187}},"hoverformat":".2f"},"yaxis":{"domain":[0,1],"automargin":true,"type":"linear","autorange":false,"range":[44.65,74.35],"tickmode":"array","ticktext":["45","50","55","60","65","70"],"tickvals":[45,50,55,60,65,70],"categoryorder":"array","categoryarray":["45","50","55","60","65","70"],"nticks":null,"ticks":"outside","tickcolor":"rgba(51,51,51,1)","ticklen":3.65296803652968,"tickwidth":0.66417600664176,"showticklabels":true,"tickfont":{"color":"rgba(77,77,77,1)","family":"","size":11.689497716895},"tickangle":-0,"showline":false,"linecolor":null,"linewidth":0,"showgrid":true,"gridcolor":"rgba(255,255,255,1)","gridwidth":0.66417600664176,"zeroline":false,"anchor":"x","title":{"text":"Impact","font":{"color":"rgba(0,0,0,1)","family":"","size":14.6118721461187}},"hoverformat":".2f"},"shapes":[{"type":"rect","fillcolor":null,"line":{"color":null,"width":0,"linetype":[]},"yref":"paper","xref":"paper","x0":0,"x1":1,"y0":0,"y1":1}],"showlegend":true,"legend":{"bgcolor":"rgba(255,255,255,1)","bordercolor":"transparent","borderwidth":1.88976377952756,"font":{"color":"rgba(0,0,0,1)","family":"","size":11.689497716895},"title":{"text":"Archetype","font":{"color":"rgba(0,0,0,1)","family":"","size":14.6118721461187}}},"hovermode":"closest","barmode":"relative"},"config":{"doubleClick":"reset","modeBarButtonsToAdd":["hoverclosest","hovercompare"],"showSendToCloud":false},"source":"A","attrs":{"8d415eb4bd1":{"x":{},"y":{},"colour":{},"Shape":{},"text":{},"type":"scatter"},"8d4f5439ca":{"x":{},"y":{},"colour":{},"Shape":{},"text":{}}},"cur_data":"8d415eb4bd1","visdat":{"8d415eb4bd1":["function (y) ","x"],"8d4f5439ca":["function (y) ","x"]},"highlight":{"on":"plotly_click","persistent":false,"dynamic":false,"selectize":false,"opacityDim":0.2,"selected":{"opacity":1},"debounce":0},"shinyEvents":["plotly_hover","plotly_click","plotly_selected","plotly_relayout","plotly_brushed","plotly_brushing","plotly_clickannotation","plotly_doubleclick","plotly_deselect","plotly_afterplot","plotly_sunburstclick"],"base_url":"https://plot.ly"},"evals":[],"jsHooks":[]}</script> |
| A Sword will always one shot an enemy so it seems a little pointless to add impact in here. However during PvP players are able to get their “Super” which allows them to do massive damage and have significantly raised defenses. Swords with low impact will not eliminate enemies with one shot while in their Super Ability. With that in mind the gold tusk seems like a solid sword to use statistically speaking. (SIDENOTE: However the temptations hook which is a casting sword allows the player to throw a projectile from the sword to one shot any enemy. But, since that is a perk I didn’t include it when deciding the most “viable” sword.) |
Just like the fusion rifles that take special ammo, Heavy Linear Fusion Rifles have a short charge time before firing but only shoot a single lazer instead of multiple. These weapons will only one shot an enemy if it is a precision shot.(Headshot) That being said these weapons are already at a disadvantage since these are just on par with sniper rifles. For these weapons you are going to want the same things as a fusion rifle. (Quick Charge time and Range)
ggplotly(Linear_Fusion_Rifles %>% filter(Ammo == "Heavy" & Archetype != "Exotic" & Archetype != "Exotic(Heavy)" & Energy != "Kinetic" & Energy != "Stasis") %>% ggplot(aes(Range, `Charge_Time(ms)`, color = Archetype, text = Weapon)) + geom_point() + ggtitle("Linear Fusion Rifles "))
As shown in the plot above the onnly 2 here are Threaded Needle and Tarantula have the same charge time but Tarantula have a far greater range. Tarantula wins this category but I highly recommend NOT running this type of weapon for PVP. (Just use a sniper)
This type of heavy weapon is just a beefy auto rifle that eliminates enemies a lot quicker than a primary weapon but NEVER a one shot. I opted to rule out these weapons in the heavy slot because special weapons can one shot and you start with 2 round. In order to use a heavy you need to first find it ammo halfway through a match and then maybe eliminate a target if you don’t get blown to bits before then. Anyways, the things you are going to want for these Heavy machine guns are quick Ttk and good range.
ggplotly(Machine_Guns %>% filter(Energy != "ALL" & Archetype != "Exotic" & Ammo == "Heavy") %>% ggplot(aes(Range, `Optimal_TtK(s)`, color = Energy, text = Weapon)) + geom_point() + ggtitle("Machine Guns by range and Opt Ttk"))
Since this plot is showing us their Optimal Ttks ae all within a tenth of a second I say its best to look for the one with the most range. This leaves us with The Swarm barely ahead Bane of Sorrow. Meaning if you want to use a machine gun in PVP (NOT RECOMMENEDED) then you should use The Swarm.
| ## Conclusion The below weapons are the ones I have gathered from the data above and are proven to be the most optimized weapons for Destiny 2’s PvP. These weapons are all reliable and I dare say the best at what they do, which is eliminate other players with ease. |
| # Primary |
| - The Last Word (Short Range) - Suros Regime (Medium Range) - No Time to Explain (Medium-Long Range) |
| # Special |
| - Any Aggressive Frame Shotgun(Short Range) - Snorri FR5 (Short-Medium Range) - Fathers Sins (Medium-Long Range) |
| # Heavy |
| - Any type of High Impact Frame that is a Rocket(Any Range) |
https://www.destinymassivebreakdowns.com/weapon-stats-spreadsheet-2
SORRY IF ALL THOSE SCATTER PLOTS SEEM A LITTLE REPETITIVE, THOSE REALLY SHOW WHAT TO LOOK FOR IN THESE STATS!